﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using IUAP.DAL.Intranet;
using IUAP.DAL;

/// <summary>
/// Descripción breve de Escuela
/// </summary>
namespace IUAP.BLL.Intranet
{
    public class Escuela : BaseIntranet
    {
        public Escuela()
        {

        }

        public Escuela(int _id_escuela
            , int _id_facultad
            , string _nomb_escuela
            , string _coor_usua
            , bool _esta_escuela)
        {
            this.Id_escuela = _id_escuela;
            this.Id_facultad = _id_facultad;
            this.Nomb_escuela = _nomb_escuela;
            this.Coor_usua = _coor_usua;
            this.Esta_escuela = _esta_escuela;
        }

        int id_escuela = 0;

        public int Id_escuela
        {
            get { return id_escuela; }
            set { id_escuela = value; }
        }
        int id_facultad = 0;

        public int Id_facultad
        {
            get { return id_facultad; }
            set { id_facultad = value; }
        }
        string nomb_escuela = "";

        public string Nomb_escuela
        {
            get { return nomb_escuela; }
            set { nomb_escuela = value; }
        }
        string coor_usua = "";

        public string Coor_usua
        {
            get { return coor_usua; }
            set { coor_usua = value; }
        }
        bool esta_escuela = true;

        public bool Esta_escuela
        {
            get { return esta_escuela; }
            set { esta_escuela = value; }
        }
        public bool update()
        {
            return Escuela.UpdateEscuela(this.Id_escuela, this.Id_facultad, this.Nomb_escuela, this.Coor_usua, this.Esta_escuela);
        }
        public static int InsertEscuela(int id_facultad, string nomb_escuela, string coor_usua)
        {
            EscuelaDetalles record = new EscuelaDetalles(0, id_facultad, nomb_escuela, coor_usua,true);
            int ret = SiteProvider.Intranet.InsertEscuela(record);
            BizObject.PurgeCacheItems("Intranet_Escuelas");
            return ret;
        }
        public static bool UpdateEscuela(int id_escuela,int id_facultad, string nomb_escuela, string coor_usua, bool esta_escuela)
        {
            EscuelaDetalles record = new EscuelaDetalles(id_escuela, id_facultad, nomb_escuela, coor_usua, esta_escuela);
            bool ret = SiteProvider.Intranet.UpdateEscuela(record);
            BizObject.PurgeCacheItems("intranet_Escuela");
            return ret;
        }
        public static List<Escuela> GetSimEscuelas(int id_facultad)
        {
            List<Escuela> escuelas = null;
            string key = "Intranet_Escuelas";
            if (BaseIntranet.Settings.EnableCaching && BizObject.Cache[key] != null)
            {
                escuelas = (List<Escuela>)BizObject.Cache[key];
            }
            else
            {
                List<EscuelaDetalles> recordset = SiteProvider.Intranet.GetSimEscuelas(id_facultad, true);
                escuelas = GetEscuelaListFromEscuelaDetallesList(recordset);
                BaseIntranet.CacheData(key, escuelas);
            }
            return escuelas;
        }
        public static List<Escuela> GetEscuelas(int id_facultad)
        {
            List<Escuela> escuelas = null;
            string key = "Intranet_Escuelas";
            if (BaseIntranet.Settings.EnableCaching && BizObject.Cache[key] != null)
            {
                escuelas = (List<Escuela>)BizObject.Cache[key];
            }
            else
            {
                List<EscuelaDetalles> recordset = SiteProvider.Intranet.GetEscuelas(id_facultad,true);
                escuelas = GetEscuelaListFromEscuelaDetallesList(recordset);
                BaseIntranet.CacheData(key, escuelas);
            }
            return escuelas;
        }
        public static List<Escuela> GetEscuelas()
        {
            List<Escuela> escuelas = null;
            string key = "Intranet_Escuelas";

            if (BaseIntranet.Settings.EnableCaching && BizObject.Cache[key] != null)
            {
                escuelas = (List<Escuela>)BizObject.Cache[key];
            }
            else
            {
                List<EscuelaDetalles> recordset = SiteProvider.Intranet.GetEscuelas(true);
                escuelas = GetEscuelaListFromEscuelaDetallesList(recordset);
                BaseIntranet.CacheData(key, escuelas);
            }
            return escuelas;
        }
        public static List<Escuela> GetSimEscuelabyDocente(string doce_usua)
        {
            List<Escuela> escuelas = null;
            string key = "Intranet_Escuelas";

            if (BaseIntranet.Settings.EnableCaching && BizObject.Cache[key] != null)
            {
                escuelas = (List<Escuela>)BizObject.Cache[key];
            }
            else
            {
                List<EscuelaDetalles> recordset = SiteProvider.Intranet.GetSimEscuelabyDocente(doce_usua,true);
                escuelas = GetEscuelaListFromEscuelaDetallesList(recordset);
                BaseIntranet.CacheData(key, escuelas);
            }
            return escuelas;
        }
        public static int GetCountEscuela()
        {
            int escuelascount = 0;
            string key = "Intranet_CantidadEscuelas";
            if (BaseIntranet.Settings.EnableCaching && BizObject.Cache[key] != null)
            {
                escuelascount = (int)BizObject.Cache[key];
            }
            else
            {
                escuelascount = SiteProvider.Intranet.GetCountEscuela(true);
                BaseIntranet.CacheData(key, escuelascount);
            }
            return escuelascount;
        }
        private static Escuela GetEscuelaFromEscuelaDetalles(EscuelaDetalles record)
        {
            if (record == null)
                return null;
            else
            {
                return new Escuela(record.Id_escuela, record.Id_facultad, record.Nomb_escuela,
                    record.Coor_usua, record.Esta_escuela);                   
            }
        }
        private static List<Escuela> GetEscuelaListFromEscuelaDetallesList(List<EscuelaDetalles> recordset)
        {
            List<Escuela> escuelas = new List<Escuela>();
            foreach (EscuelaDetalles record in recordset)
                escuelas.Add(GetEscuelaFromEscuelaDetalles(record));
            return escuelas;
        }
    }
}